DevOps 与 CI/CD 的概念

作者 Marlous 日期 2018-10-31
DevOps 与 CI/CD 的概念

参考:
1、 一文收录16张DevOps ”拍照神图”
2、 如何理解持续集成、持续交付、持续部署?
3、 什么是DevOps?阿里专家为你来解读
4、 给 DevOps 初学者的入门指南
5、 一点都不高大上,手把手教你使用Travis CI实现持续部署
6、 理想化的DevOps流程
7、 腾讯云 DevOps 解决方案
8、 自动化打包(持续集成+持续交付+持续部署)
9、 jenkins持续集成原理

一 概述工作流

整个软件工程从提出需求到最终交付的流程。

1 传统工作流

  • PD(Demond) ->[ DEV(Coding) -> SCM(Build) -> QA(Test) -> OPS(Deploy) ]-> Release
  • PD 提出需求 ->[ 开发者根据需求写代码 -> SCM 拿着代码去打包 -> QA 测试 -> 运维进行上线部署 ]

2 DevOps 工作流

DevOps 即更好的优化开发、测试、运维的流程;开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
同时,CI/CD(持续集成/持续部署)可看作传统工作流的增强版;DevOps 可看作是 CI/CD 的增强版。
DevOps 工作流概述
DevOps 工作流具体

3 敏捷开发、DevOps、CI/CD 关系

所处的软件生命周期不同。
敏捷开发、DevOps、CI/CD 关系

4 一些 DevOps 相关服务

  • 微软的 App Center
  • CircleCI
  • Netlify

5 自动化打包

引起各种奇怪问题的原因有很多,比如开发环境比较复杂不干净,IDE 的 bug,提交前有一些必要的检查需要做,但是开发时因为各种原因没做,这些机械重复的事情我们可以找一个工具来帮我们完成,而且这个工具跑在一个专门的服务器上,该服务器环境相对干净,可以运行一些自动化操作,而自动编译,代码检查,测试等环节,那么这种东西,就是持续集成。

  • 持续集成:
    频繁地(一天多次)将代码集成到主干。
    要求:一个自动构建过程,包括自动编译、分发、部署和测试等;一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库;一个持续集成服务器。

  • 持续交付:
    频繁地将软件的新版本,交付给测试和用户,以供测试和评审。

  • 持续部署:
    是持续交付的下一步,指的是代码通过以后,自动部署到生产环境。

二 DevOps 的技术栈与工具链

参考:
1、 给 DevOps 初学者的入门指南

  1. 图解工具链:
    图解工具链

  2. 工具链列表:

  • 版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
  • 自动化构建和测试: Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
  • 持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
  • 容器平台: Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
  • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
  • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
  • 服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
  • 日志管理:Logstash、CollectD、StatsD
  • 监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

三 DevOps 知识图谱

参见 GitHub 项目 developer-roadmap:链接

DevOps 知识图谱